package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.model.DFuelPriceEffective;
import cn.huiyunche.base.service.model.DRoute;
import cn.huiyunche.base.service.model.DRouteVehiclePriceEffective;
import cn.huiyunche.base.service.model.DVehiclePreKilometerFeeEffective;

import java.math.BigDecimal;
import java.util.Map;

/**
 * The interface D waybill fee service.
 *
 * @FileName: cn.huiyunche.base.service.interfaces
 * @Description: 运单费用计算
 * @author: Aaron
 * @date: 2017 /3/2 下午5:48
 */
public interface DWaybillFeeService {

    /**
     * get waybill cost list by calc.
     *
     * @param vehicleClassifyId the vehicle classify id
     * @param firstFuelTotal
     * @param oProvince         the o province     @return the list
     * @param oTag              the o tag
     * @param dProvice          the d provice
     * @param dTag              the d tag
     */
    //Map<Integer, Object> getWaybillCostByCalc(Integer vehicleClassifyId, BigDecimal firstFuelTotal, String oProvince, String oTag, String dProvice, String dTag) throws Exception;

    /**
     * Match vehicle route d route vehicle price effective.
     *
     * @param vehicleTypeId the vehicle type id
     * @param routeId       the o province
     * @return the d route vehicle price effective
     */
    DRouteVehiclePriceEffective matchVehicleRoute(Integer vehicleTypeId, Integer routeId) throws Exception;

    /**
     * Match route d route.
     *
     * @param oProvince the o province
     * @param oTag      the o tag
     * @param dProvice  the d provice
     * @param dTag      the d tag
     * @return the d route
     */
    DRoute matchRoute(String oProvince, String oTag, String dProvice, String dTag) throws Exception;

    /**
     * Select vehicle pre kilometer fee by vhielce type id d vehicle pre kilometer fee effective.
     *
     * @param vehicleTypeId the vehicle type id
     * @return the d vehicle pre kilometer fee effective
     */
    DVehiclePreKilometerFeeEffective selectVehiclePreKilometerFeeByVhielceTypeId(Integer vehicleTypeId) throws Exception;

    DFuelPriceEffective selectCurrentOilPrice(Integer fuelTypeId);

    /**
     * 计算价格
     * 返回 第一桶油 距离  价格 运费等
     */
    Map<Integer, Object> getWaybillCostByCalc(Integer vehicleClassifyId, String oProvince, String oTag, String dProvice, String dTag, BigDecimal extraCost)throws Exception;
}
